「論理的思考」は、分かっている状況を順序立てて考える事を指しますね。
全体的に分かっていなくても・・・です。

分かっていない事でも、お互いの共通認識の中から、一部分を取って説明するのですから『分かっている』事が前提としてあります。

これが、コンピューターが相手になると、共通認識と言うものがなく「分かっていない」事が前提になります(汗)

宇宙人を相手にしているようなものなので、この世の言葉で論理的に考えて説明しても伝わりません。
これ、当たり前なんですけど、ついつい「なんで分からんのだ―!」ってパソコンに向かって言ってしまうことありませんか?
(私だけではないはず・・・笑)

「プログラミング的思考」って何?

はい、やっと?本題に入ります。
お待たせしました(笑)

はてさて、 「プログラミング的思考」とは? ~序章~ のページで、「プログラミング的思考」の「プログラミング」は コンピューターに対してという限定的な範囲 と書いていましたが覚えていますか?

これ、相手が人間でも構わないのですが、それを前提にしてしまうと「自分の思考」なのか?「相手の思考」なのか?が分かりにくくなってしまうので、あえて コンピューターに対して と言い切らせて頂きます。

つまり、コンピューターが相手という事は、 人間の思考が通用しない と、いう事になります。
という事は「このくらい言えば察してくれるだろう」という人間に対してよく使う技が通用しないという事です。

意味分かりますか?

例えば、「洗濯しておいてくれる?」と、誰かに頼んだとしましょう。

ところであなたは「洗濯」と言ったら、どこからどこまでの行為を指していますか?

洗濯機のボタンを押すだけですか?
洗濯機の中に入っているものだけを洗う事ですか?

いやいや、部屋の中の洗濯ものを集めるところからでしょう?
そんなの甘い!洗濯が終わって干すところまでが洗濯でしょ!
干すだけじゃ洗濯の途中よ!取り込んで、たたんでタンスに入れるまでよ!

頼んだ相手が「洗濯」をどこからどこまでの行為だと思っているかによって結果が変わってきますが・・・
少なくとも「洗濯」という行為はどんな手順があるのか?うっすらでも分かっているので、洗濯機のボタンを押すくらいは、きっとやってくれるでしょう。

では、同じことをロボットに頼んでみましょう。

コンピューターは人間と違って「推測する」という機能はついていないので「どこからどこまでどんなことをして欲しいのか?」を、事細かに指示をしないとなりません。
例えば、こんな↓感じでしょうか?

  1. 部屋に行って洗濯が必要な服があったら回収する
  2. 回収したものを洗濯機の中に入れ、スタートボタンを押す
  3. 洗濯が終わるとブザーが鳴るので、鳴ったら洗濯ものを取り出し、物干し竿に干す
  4. 乾いたら取り込み、洗濯ものを畳む

指示を出す側は、この指示書で自分が思った通りやってくれるだろうと思いますよね?
と・こ・ろ・が・・・です。
指示を受けた側としては・・・

部屋ってどこの部屋ですか?
洗濯が必要な服ってどんな服ですか?
洗濯機はどれですか?
回収した服全部入らないのですが、どうしたらいいですか?
スタートボタンはどれですか?・・・

等々、実際やってみると、足りない情報があることに気づきます。
けれども、これが人間が相手だと「そのくらい自分で考えなさい!」と、問題の矛先を、指示を受けた側に すり替える という技が使えます(笑)

しかし、コンピューターが相手だと、自分の指示の方法を変えない限り、いつまでたっても目標が達成されません。
最終的に「洗濯は自分でやった方が楽だな・・・」と思うかもしれません。

なぜならば、コンピューターが考え方を変える事は100%ないので、コンピューター側のルールに従って指示書を作成しなければならないのですが・・・
指示する側が、コンピューター側のルールをよく理解していないと、直しても直しても目標が達成できないという状況が続き、やがて心の方が折れてしまうことがあります(涙)

けれども、自分が思った通りに動く指示書が完成すると、コンピューターは何度頼んでも完璧にそのとおり動いてくれます。

人間に頼むと・・・
「えー?今やらなきゃダメ?」と、予定していた時間に終わっていない事があったり、
「OK!やっておくよ~」と、いう返事をもらっても「あ、忘れてた」と言って、始まってすらいないことがあったり、
指示を受けた側の様々な理由で、その通り動いてくれないことが度々ありますね?

指示をする側は、頼んだ相手が「やってくれると期待していた」為に、落ち込んだり、怒りの感情が沸いたり・・・2次災害が起こることもあるかもしれませんね(汗)

と、いう訳で「プログラミング的思考」は「論理的思考」の前の段階
「相手がどんなルールで動いているのか?」を知るという行為も含まれます。

はい、おさらいです。
相手がコンピューターの場合、
「このくらい言えば察してくれるだろう」とか
「そのくらい自分で考えなさい!」とか
相手が変わってくれるだろうという期待をするだけ無駄 だということを覚えておきましょう。

何が起こっても、指示を出した自分が悪いので、自分の何が悪かったかを考え、改善することに努めましょう。
でなければ、いつまでたっても前に進めません。

「相手を変える」思考が通用しないので、自分を変えるトレーニングには最適です(笑)

はっきり言います。
「プログラミング的思考」が身に付くと、 自分の思考をすぐに変えることができる ようになります。

実は「プログラミング的思考」で身に付くことはこれだけではありません!
次は「どんなことが身に付くか?」についてお話していきましょう♪